Various applications may call for the calculation of the elementary symmetric functions of subsets of a set of numerical elements. For a set {Z} comprising m numerical elements, the jth elementary symmetric function of set {Z} is the sum of the products of all subsets of j distinct elements of set {Z}. In this regard, esf(j) denotes the jth elementary symmetric function of set {Z} indexed by number j. By way of example, for a set {Z} containing m=5 numerical elements (e.g. {Z}={a, b, c, d, e}), the esf(j)'s are:esf(0)=1esf(1)=a+b+c+d+e esf(2)=ab+ac+ad+ae+bc+bd+be+cd+ce+de esf(3)=abc+abd+abe+acd+ace+ade+bcd+bce+bde+cde esf(4)=abcd+abce+abde+acde+bcde esf(5)=abcde When called for, the elementary symmetric functions of a (m−1)-subset of a set {Z} may be calculated by removing one of the elements of set {Z} and then calculating the elementary symmetric functions of the subset in the same manner as for the entire set {Z}. In this regard, one known manner of implementing such a process may be expressed in pseudo-code as follows:
for i= 1 to m{ subset = {Z\z(i)} ssf (:, i) = calculateESF(subset)}where {Z\z(i)} is the subset of set {Z} with the ith element of set {Z} removed. As can be seen, such a process makes m calls to the relatively expensive (in terms of calculation time) calculateESF( ) function (e.g., the poly( ) function in MATLAB®), which is the function that calculates the elementary symmetric functions. In accordance with such a process that makes m calls to the function that calculates the elementary symmetric functions, calculation of the elementary symmetric functions for all (m−1)-subsets of set {Z} requires a m2*(log m)2 time-frame in order to complete since one of the fastest known algorithms for calculating one set of elementary symmetric functions requires a m*(log m)2 time frame to complete.